<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Language" content="zh-CN"><title>systemd-analyze
  中文手册 [金步国]</title><style>
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1 { text-align:center; background:#ddd; }
h2#auth_name { text-align:center; margin: 10px 5%; }

    a.headerlink {
      color: #c60f0f;
      font-size: 0.8em;
      padding: 0 4px 0 4px;
      text-decoration: none;
      visibility: hidden;
    }

    a.headerlink:hover {
      background-color: #c60f0f;
      color: white;
    }

    h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
      visibility: visible;
    }
</style><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><h1>systemd-analyze 中文手册</h1><h2 id="auth_name">译者：<strong><a href="../index.html">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p><ul><li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li><li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li><li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li></ul><h3>其他作品</h3><p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p><ul><li><a href="../index.html">金步国作品集</a> [ <a href="../index.html">http://www.jinbuguo.com/</a> ]</li></ul><h3>联系方式</h3><p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p><ul><li>Email(QQ)：70171448在QQ邮箱</li></ul><hr><a href="systemd.index.html">手册索引</a> ·
  <a href="systemd.directives.html">指令索引</a><span style="float:right">systemd-241</span><hr><div class="refentry"><a name="systemd-analyze"></a><div class="titlepage"></div><div class="refnamediv"><h2>名称</h2><p>systemd-analyze — 分析与调试 systemd 系统管理器</p></div><div class="refsynopsisdiv"><h2>大纲</h2><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...] [time]</p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  blame </p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  critical-chain  [<em class="replaceable"><code>UNIT</code></em>...]</p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  plot  [&gt; file.svg]</p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  dot  [<em class="replaceable"><code>PATTERN</code></em>...] [&gt; file.dot]</p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  dump </p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  cat-config   <em class="replaceable"><code>NAME</code></em>|<em class="replaceable"><code>PATH</code></em>... </p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  unit-paths </p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  log-level  [<em class="replaceable"><code>LEVEL</code></em>]</p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  log-target  [<em class="replaceable"><code>TARGET</code></em>]</p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  syscall-filter  [<em class="replaceable"><code>SET</code></em>…]</p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  verify  [<em class="replaceable"><code>FILES</code></em>...]</p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  calendar   <em class="replaceable"><code>SPECS</code></em>... </p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  service-watchdogs  [<em class="replaceable"><code>BOOL</code></em>]</p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  timespan   <em class="replaceable"><code>SPAN</code></em>... </p></div><div class="cmdsynopsis"><p><code class="command">systemd-analyze</code>  [OPTIONS...]  security   <em class="replaceable"><code>UNIT</code></em>... </p></div></div><div class="refsect1"><a name="id-1.5"></a><h2 id="描述">描述<a class="headerlink" title="Permalink to this headline" href="systemd-analyze.html#%E6%8F%8F%E8%BF%B0">¶</a></h2><p><span class="command"><strong>systemd-analyze</strong></span>
    可以显示系统启动过程中的性能统计数据、
    获取 systemd 系统管理器的状态与跟踪信息、
    校验单元文件的正确性。
    此外，还可以用于调试 systemd 系统管理器。</p><p><span class="command"><strong>systemd-analyze time</strong></span>
    可以显示如下时间：
    (1)在启动第一个用户态进程(init)之前，内核运行了多长时间；
    (2)在切换进入实际的根文件系统之前，initrd(initial RAM disk)运行了多长时间；
    (3)进入实际的根文件系统之后，用户空间启动完成花了多长时间。
    注意，
    上述时间只是简单的计算了系统启动过程中到达不同标记点的时间，
    并没有计入各单元实际启动完成所花费的时间以及磁盘空闲的时间。</p><p><span class="command"><strong>systemd-analyze blame</strong></span>
    按照每个单元花费的启动时间从多到少的顺序，列出所有当前正处于活动(active)状态的单元。
    这些信息有助于用户优化系统启动速度。
    不过需要注意的是，这些信息也可能具有误导性，
    因为花费较长时间启动的单元，有可能只是在等待另一个依赖单元完成启动。
    注意，
     <span class="command"><strong>systemd-analyze blame</strong></span>
     <code class="varname">Type=simple</code> 服务的结果，
    因为 systemd 认为这种服务是立即启动的，
    所以无法测量初始化延迟。</p><p><span class="command"><strong>systemd-analyze critical-chain
    [<em class="replaceable"><code>UNIT…</code></em>]</strong></span>
    为指定的单元(省略参数表示默认启动目标单元)以树状形式显示时间关键链(time-critical chain)。
    "@"后面的时刻表示该单元的启动时刻；
    "+"后面的时长表示该单元总计花了多长时间才完成启动。
    不过需要注意的是，
    这些信息也可能具有误导性，
    因为花费较长时间启动的单元，
    有可能只是在
    等待另一个依赖单元完成启动。</p><p><span class="command"><strong>systemd-analyze plot</strong></span>
    输出一个 SVG 图像，详细显示每个单元的启动时刻，
    并高亮显示每个单元总计花了多长时间才完成启动。</p><p><span class="command"><strong>systemd-analyze dot</strong></span>
     按照
     GraphViz
    <a href="https://linux.die.net/man/1/dot"><span class="citerefentry"><span class="refentrytitle">dot</span>(1)</span></a>
    格式输出单元间的依赖关系图。
    在实践中，通常使用 <span class="command"><strong>systemd-analyze dot | dot
    -Tsvg &gt; systemd.svg</strong></span> 命令来最终生成描述单元间依赖关系的 SVG 图像。
    除非使用了 <code class="option">--order</code> 或
    <code class="option">--require</code> 选项限定仅显示特定类型的依赖关系，
    否则将会显示所有的依赖关系。如果指定了至少一个
    <em class="replaceable"><code>PATTERN</code></em> 参数(例如
     <code class="filename">*.target</code> 这样的 shell 匹配模式)，
    那么将会仅显示所有匹配这些模式的单元的直接依赖关系。</p><p><span class="command"><strong>systemd-analyze dump</strong></span>
    按照人类易读的格式输出全部单元的状态(一般都有几千数万行)。
    因为它的输出格式经常在未通知的情况下发生变化，
    所以切勿将此输出用于程序分析。</p><p><span class="command"><strong>systemd-analyze cat-config</strong></span>
    类似于 <span class="command"><strong>systemctl cat</strong></span> ，但用于显示配置文件。
    此命令将会把配置文件与配置片段的内容显示在标准输出上，
    并且遵守 systemd 配置目录与配置文件的优先级规则。
    参数要么是
    绝对路径(例如 <code class="filename">/etc/systemd/logind.conf</code> 或
    <code class="filename">/usr/lib/systemd/logind.conf</code>)、
    要么是相对于前缀的相对路径(例如 <code class="filename">systemd/logind.conf</code>)。
    </p><div class="example"><a name="id-1.5.10"></a><p class="title"><b>例 1. 显示 logind 的配置</b></p><div class="example-contents"><pre class="programlisting">$ systemd-analyze cat-config systemd/logind.conf
# /etc/systemd/logind.conf
...
[Login]
NAutoVTs=8
...

# /usr/lib/systemd/logind.conf.d/20-test.conf
... some override from another package

# /etc/systemd/logind.conf.d/50-override.conf
... some administrator override
      </pre></div></div><br class="example-break"><p><span class="command"><strong>systemd-analyze unit-paths</strong></span> 列出与单元相关的全部目录，
    包括：单元文件目录、配置片段目录(<code class="filename">.d</code>)、
    依赖关系目录(<code class="filename">.wants</code> 与 <code class="filename">.requires</code>)。
    与 <code class="option">--user</code> 一起使用时表示针对 systemd 用户实例。
    与 <code class="option">--global</code> 一起使用时表示针对 systemd 用户实例的全局配置。
    注意，此命令输出的列表仅为编译在
    <span class="command"><strong>systemd-analyze</strong></span> 中的路径，
    它实际上并不与运行中的 systemd 进程通信。
    </p><pre class="programlisting">systemctl [--user] [--global] show -p UnitPath --value</pre><p>
    命令会列出运行中的 systemd 进程实际使用的路径列表，
    但是会忽略空目录。</p><p><span class="command"><strong>systemd-analyze log-level</strong></span>
    打印出 <span class="command"><strong>systemd</strong></span> 守护进程当前的日志等级。
    如果提供了可选的 <em class="replaceable"><code>LEVEL</code></em> 参数，
    那么表示将 <span class="command"><strong>systemd</strong></span> 守护进程的日志等级更改为 <em class="replaceable"><code>LEVEL</code></em> (可使用的值参见
    <code class="option">--log-level=</code> 选项(参见
    <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>))。</p><p><span class="command"><strong>systemd-analyze log-target</strong></span>
    打印出 <span class="command"><strong>systemd</strong></span> 守护进程当前的日志目标。
    如果提供了可选的 <em class="replaceable"><code>TARGET</code></em> 参数，
    那么表示将 <span class="command"><strong>systemd</strong></span> 守护进程的日志目标更改为 <em class="replaceable"><code>TARGET</code></em> (可使用的值参见
    <code class="option">--log-target=</code> 选项(参见
    <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>))。</p><p><span class="command"><strong>systemd-analyze syscall-filter [<span class="optional"><em class="replaceable"><code>SET</code></em>…</span>]</strong></span>
    如果指定了至少一个 <em class="replaceable"><code>SET</code></em> 参数，那么仅显示指定的集合所包含的系统调用列表；
    否则显示全部系统调用集合的详情。注意，必须在 <em class="replaceable"><code>SET</code></em> 参数中包含
    "<code class="literal">@</code>" 前缀。</p><p><span class="command"><strong>systemd-analyze verify</strong></span>
    校验指定的单元文件以及被指定的单元文件引用的其他单元文件的正确性，并显示发现的错误。
    <em class="replaceable"><code>FILES</code></em> 参数可以是单元文件的精确路径(带有上级目录)，也可以仅仅是单元文件的名称(没有目录前缀)。
    对于那些仅给出了文件名(没有目录前缀)的单元，
    将会优先在其他已经给出精确路径的单元文件的所在目录中搜索，
    如果没有找到，将会继续在常规的单元目录中搜索(详见
    <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a> 手册)。
    可以使用 <code class="varname">$SYSTEMD_UNIT_PATH</code>
    环境变量来更改默认的单元搜索目录。</p><p><span class="command"><strong>systemd-analyze calendar</strong></span> 解析并标准化"日历事件"，
    计算出下一个过期时间。接受的参数与 <code class="varname">OnCalendar=</code> 选项(参见
     <a href="systemd.timer.html#"><span class="citerefentry"><span class="refentrytitle">systemd.timer</span>(5)</span></a> 手册)相同，
    表达式语法遵守
    <a href="systemd.time.html#"><span class="citerefentry"><span class="refentrytitle">systemd.time</span>(7)</span></a> 规范。</p><p><span class="command"><strong>systemd-analyze service-watchdogs</strong></span>
    显示 <span class="command"><strong>systemd</strong></span> 守护进程的服务单元运行时看门狗的当前状态。
    如果提供了可选的布尔值参数，那么表示全局启用或禁用
    服务单元运行时看门狗(<code class="option">WatchdogSec=</code>)与紧急操作(例如
    <code class="option">OnFailure=</code> 或 <code class="option">StartLimitAction=</code>)。参见
    <a href="systemd.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd.service</span>(5)</span></a> 手册。
    注意，硬件看门狗不受该命令的影响。</p><p><span class="command"><strong>systemd-analyze timespan</strong></span> 解析一个"时长"，并以微秒为单位输出规格化后的等效值。
    接受的参数表达式语法遵守 <a href="systemd.time.html#"><span class="citerefentry"><span class="refentrytitle">systemd.time</span>(7)</span></a>
    规范。有单位的值将被解析为秒。</p><p><span class="command"><strong>systemd-analyze security</strong></span> 分析一个或多个指定服务单元的安全性和沙箱设置。
    如果指定了至少一个单元名称，那么将检查指定服务单元的安全设置并显示详细分析。
    如果未指定单元名称，那么将检查所有当前已加载的长时间运行的服务单元，
    并显示一个简洁的结果表格。
    该命令检查各种安全相关的设置，根据每个设置的重要性分配一个"暴露级别"数值。
    然后，为整个单元计算出一个总体暴露级别数值，这是一个
    0.0…10.0 之间的估计值，表示该服务的暴露程度。
    数值越大表示沙箱应用的越少(安全性越低)、数值越小表示沙箱应用的越多(安全性越高)。
    注意，该命令只分析 systemd 本身实现的针对每个服务的安全特性，
    并不会考虑服务代码本身应用的任何附加安全机制。不要误解这种方式计算的"暴露级别"：
    高"暴露级别"既不意味着服务代码本身没有有效的沙箱机制，
    也不意味着服务实际上易受远程或本地攻击的影响。
    但是，高"暴露级别"的服务确实有可能需要加强额外的安全与沙箱限制。
    注意，许多单独的安全和沙箱设置是可以规避绕过的(除非与其他结合使用)。
    例如，如果服务保留了创建或撤消挂载点的特权，
    那么许多沙箱选项就可以由服务代码本身取消。
    所以，每个服务应该尽可能使用最全面和最严格的沙箱与安全设置。
    该工具会考虑某些设置组合之间的关系，但不是全部。
    还要注意，这里分析的安全性和沙箱设置仅适用于服务代码本身执行的操作。
    如果一个服务可以访问IPC系统(例如 D-Bus)，那么它可能会请求其他不受相同限制的服务进行操作。
    如果没有验证IPC访问策略，
    那么任何全面的安全性和沙箱分析都是不完整的。</p><p>如果没指定任何命令，那么等价于使用 <span class="command"><strong>systemd-analyze
    time</strong></span> 命令。</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="选项(OPTIONS)">选项(OPTIONS)<a class="headerlink" title="Permalink to this headline" href="systemd-analyze.html#%E9%80%89%E9%A1%B9(OPTIONS)">¶</a></h2><p>可以识别的选项如下：</p><div class="variablelist"><dl class="variablelist"><dt id="--system"><span class="term"><code class="option">--system</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--system">¶</a></dt><dd><p>操作 systemd 系统实例。
        这是隐含的默认值。</p></dd><dt id="--user"><span class="term"><code class="option">--user</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--user">¶</a></dt><dd><p>操作 systemd
         用户实例。</p></dd><dt id="--global"><span class="term"><code class="option">--global</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--global">¶</a></dt><dd><p>操作 systemd 用户实例的
        全局配置。</p></dd><dt id="--order"><span class="term"><code class="option">--order</code>, </span><span class="term"><code class="option">--require</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--order">¶</a></dt><dd><p>仅可与
        <span class="command"><strong>dot</strong></span> 命令一起使用，
        表示仅显示特定类型的依赖。
        <code class="option">--order</code> 表示仅显示
         <code class="varname">After=</code> 与 <code class="varname">Before=</code> 依赖。
        <code class="option">--require</code> 表示仅显示
         <code class="varname">Requires=</code>,
        <code class="varname">Requisite=</code>,
        <code class="varname">Wants=</code>, <code class="varname">Conflicts=</code> 依赖。
        如果这两个选项都没有使用，
        那么表示显示所有依赖。</p></dd><dt id="--from-pattern="><span class="term"><code class="option">--from-pattern=</code>, </span><span class="term"><code class="option">--to-pattern=</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--from-pattern=">¶</a></dt><dd><p>仅可与
        <span class="command"><strong>dot</strong></span> 命令一起使用，
        用于筛选可以出现在依赖关系图中的单元。
        这两个选项都接受一个符合
        <a href="https://linux.die.net/man/7/glob"><span class="citerefentry"><span class="refentrytitle">glob</span>(7)</span></a>
        规范的 shell 匹配模式(例如
         <code class="filename">*.target</code>)，
        用于匹配单元的名称。</p><p>可以多次使用这两个选项，
        以筛选
        最终允许出现在依赖关系图中的单元，
        多个选项的组合规则如下：
        先将多个"from"选项视为一组(内部用"OR"逻辑连接)、
        再将多个"to"选项视为一组(内部用"OR"逻辑连接)，
        最后再将"from"组与"to"组之间用"AND"逻辑连接。
        最终计算出
        可以出现在依赖关系图中的单元。</p></dd><dt id="--fuzz=timespan"><span class="term"><code class="option">--fuzz=</code><em class="replaceable"><code>timespan</code></em></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--fuzz=timespan">¶</a></dt><dd><p>仅可与
        <span class="command"><strong>critical-chain</strong></span> 命令一起使用，
        表示也显示那些比同一层次上最后一个单元完成启动的时间
        提前了不足 <em class="replaceable"><code>timespan</code></em> 时长的单元。
        <em class="replaceable"><code>timespan</code></em> 的默认单位是秒，
        但是也可以
        明确的设置单位后缀(例如"50ms")。</p></dd><dt id="--man=no"><span class="term"><code class="option">--man=no</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--man=no">¶</a></dt><dd><p>不检查
         <code class="varname">Documentation=</code> 中列出的手册页是否真实存在。
        </p></dd><dt id="--generators"><span class="term"><code class="option">--generators</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--generators">¶</a></dt><dd><p>调用单元生成器(参见
        <a href="systemd.generator.html#"><span class="citerefentry"><span class="refentrytitle">systemd.generator</span>(7)</span></a> 手册)。
        某些单元生成器需要超级用户权限，如果以普通用户身份调用，
        那么将会导致报错或警告。</p></dd><dt id="--root=PATH"><span class="term"><code class="option">--root=<em class="replaceable"><code>PATH</code></em></code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--root=PATH">¶</a></dt><dd><p>用于 <span class="command"><strong>cat-files</strong></span> 命令，
        在指定的根路径 <em class="replaceable"><code>PATH</code></em> 下显示配置文件。</p></dd><dt id="-H"><span class="term"><code class="option">-H</code>, </span><span class="term"><code class="option">--host=</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#-H">¶</a></dt><dd><p><a name="host-text"></a>操作指定的远程主机。可以仅指定一个主机名(hostname)，
      也可以使用 "<code class="literal">username@hostname</code>" 格式。
      hostname 后面还可以加上
      SSH监听端口(以冒号"<code class="literal">:</code>"分隔)与容器名(以正斜线"<code class="literal">/</code>"分隔)，
      也就是形如 "<code class="literal">hostname:port/container</code>" 的格式，
      以表示直接连接到指定主机的指定容器内。
      操作将通过SSH协议进行，以确保安全。
      可以通过
      <span class="command"><strong>machinectl -H
      <em class="replaceable"><code>HOST</code></em></strong></span> 命令列出远程主机上的所有容器名称。IPv6地址必须放在方括号([])内。</p></dd><dt id="-M"><span class="term"><code class="option">-M</code>, </span><span class="term"><code class="option">--machine=</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#-M">¶</a></dt><dd><p><a name="machine-text"></a>在本地容器内执行操作。
      必须明确指定容器的名称。</p></dd><dt id="-h"><span class="term"><code class="option">-h</code>, </span><span class="term"><code class="option">--help</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#-h">¶</a></dt><dd><p><a name="help-text"></a>显示简短的帮助信息并退出。
    </p></dd><dt id="--version"><span class="term"><code class="option">--version</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--version">¶</a></dt><dd><p><a name="version-text"></a>显示简短的版本信息并退出。</p></dd><dt id="--no-pager"><span class="term"><code class="option">--no-pager</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#--no-pager">¶</a></dt><dd><p>不将程序的输出内容管道(pipe)给分页程序。</p></dd></dl></div></div><div class="refsect1"><a name="id-1.7"></a><h2 id="退出状态">退出状态<a class="headerlink" title="Permalink to this headline" href="systemd-analyze.html#%E9%80%80%E5%87%BA%E7%8A%B6%E6%80%81">¶</a></h2><p>返回值为 0 表示成功，
    非零返回值表示失败代码。</p></div><div class="refsect1"><a name="id-1.8"></a><h2 id=" dot 命令的例子"> <span class="command"><strong>dot</strong></span> 命令的例子<a class="headerlink" title="Permalink to this headline" href="systemd-analyze.html#%20dot%20%E5%91%BD%E4%BB%A4%E7%9A%84%E4%BE%8B%E5%AD%90">¶</a></h2><div class="example"><a name="id-1.8.2"></a><p class="title"><b>例 2. 把所有名称以
      "<code class="literal">avahi-daemon</code>"开头的单元的依赖关系绘制成一张图</b></p><div class="example-contents"><pre class="programlisting">$ systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg &gt; avahi.svg
$ eog avahi.svg</pre></div></div><br class="example-break"><div class="example"><a name="id-1.8.3"></a><p class="title"><b>例 3. 把所有 target 单元之间的依赖关系绘制成一张图</b></p><div class="example-contents"><pre class="programlisting">$ systemd-analyze dot --to-pattern='*.target' --from-pattern='*.target' | dot -Tsvg &gt; targets.svg
$ eog targets.svg</pre></div></div><br class="example-break"></div><div class="refsect1"><a name="id-1.9"></a><h2 id=" verify 命令的例子"> <span class="command"><strong>verify</strong></span> 命令的例子<a class="headerlink" title="Permalink to this headline" href="systemd-analyze.html#%20verify%20%E5%91%BD%E4%BB%A4%E7%9A%84%E4%BE%8B%E5%AD%90">¶</a></h2><p>目前可以检测如下错误：</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>未知的小节与配置指令(配置选项)
      </p></li><li class="listitem"><p>未找到
      必须依赖的单元</p></li><li class="listitem"><p>未找到
      <code class="varname">Documentation=</code>
      中列出的手册页</p></li><li class="listitem"><p>未找到在例如 <code class="varname">ExecStart=</code>
      等可执行指令中设置的
      可执行文件(包括找到的文件不具备可执行权限)</p></li></ul></div><div class="example"><a name="id-1.9.4"></a><p class="title"><b>例 4. 拼写错误的配置指令</b></p><div class="example-contents"><pre class="programlisting">$ cat ./user.slice
[Unit]
WhatIsThis=11
Documentation=man:nosuchfile(1)
Requires=different.service

[Service]
Description=x

$ systemd-analyze verify ./user.slice
[./user.slice:9] Unknown lvalue 'WhatIsThis' in section 'Unit'
[./user.slice:13] Unknown section 'Service'. Ignoring.
Error: org.freedesktop.systemd1.LoadFailed:
   Unit different.service failed to load:
   No such file or directory.
Failed to create user.slice/start: Invalid argument
user.slice: man nosuchfile(1) command failed with code 16
      </pre></div></div><br class="example-break"><div class="example"><a name="id-1.9.5"></a><p class="title"><b>例 5. 丢失了 service 单元</b></p><div class="example-contents"><pre class="programlisting">$ tail ./a.socket ./b.socket
==&gt; ./a.socket &lt;==
[Socket]
ListenStream=100

==&gt; ./b.socket &lt;==
[Socket]
ListenStream=100
Accept=yes

$ systemd-analyze verify ./a.socket ./b.socket
Service a.service not loaded, a.socket cannot be started.
Service b@0.service not loaded, b.socket cannot be started.
      </pre></div></div><br class="example-break"></div><div class="refsect1"><a name="id-1.10"></a><h2 id="环境变量">环境变量<a class="headerlink" title="Permalink to this headline" href="systemd-analyze.html#%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F">¶</a></h2><div class="variablelist"><dl class="variablelist"><dt id="$SYSTEMD_PAGER"><span class="term"><code class="varname">$SYSTEMD_PAGER</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#%24SYSTEMD_PAGER">¶</a></dt><dd><p>指定分页程序。仅在未指定 <code class="option">--no-pager</code> 选项时有意义。
      此变量会覆盖 <code class="varname">$PAGER</code> 的值。如果 <code class="varname">$SYSTEMD_PAGER</code> 与 <code class="varname">$PAGER</code> 都未设置，
      那么将会依次尝试如下常见的分页程序：
      <a href="http://man7.org/linux/man-pages/man1/less.1.html"><span class="citerefentry"><span class="refentrytitle">less</span>(1)</span></a>,
      <a href="http://man7.org/linux/man-pages/man1/more.1.html"><span class="citerefentry"><span class="refentrytitle">more</span>(1)</span></a>,
      如果最终仍未找到分页程序，那么将不使用分页。
      将此变量设为空字符串或 "<code class="literal">cat</code>" 等价于使用 <code class="option">--no-pager</code> 选项。</p></dd><dt id="$SYSTEMD_LESS"><span class="term"><code class="varname">$SYSTEMD_LESS</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#%24SYSTEMD_LESS">¶</a></dt><dd><p>用于覆盖默认传递给 <span class="command"><strong>less</strong></span>
      程序的命令行选项("<code class="literal">FRSXMK</code>")。</p><p>如果 <code class="varname">$SYSTEMD_LESS</code> 的值不含 "<code class="literal">K</code>" ，
      并且使用 <span class="command"><strong>less</strong></span> 作为分页程序，那么
      <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>C</strong></span> 信号将会被忽略。
      这将允许 <span class="command"><strong>less</strong></span> 自己处理
      <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>C</strong></span> 信号。</p></dd><dt id="$SYSTEMD_LESSCHARSET"><span class="term"><code class="varname">$SYSTEMD_LESSCHARSET</code></span><a class="headerlink" title="Permalink to this term" href="systemd-analyze.html#%24SYSTEMD_LESSCHARSET">¶</a></dt><dd><p>用于覆盖默认传递给 <span class="command"><strong>less</strong></span> 程序的字符集。
      (如果终端兼容 UTF-8 ，那么默认值是 "<code class="literal">utf-8</code>" )</p></dd></dl></div></div><div class="refsect1"><a name="id-1.11"></a><h2 id="参见">参见<a class="headerlink" title="Permalink to this headline" href="systemd-analyze.html#%E5%8F%82%E8%A7%81">¶</a></h2><p>
      <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
      <a href="systemctl.html#"><span class="citerefentry"><span class="refentrytitle">systemctl</span>(1)</span></a>
    </p></div></div></body></html>
